import axios from 'axios'
import { Toast } from "vant"
import store from "../store/index"
import Vuex from 'vuex'
import router from "../router/index"
// 调用 axios.create() 方法，创建 axios 的实例对象
const instance = axios.create({
  // 请求根路径
  baseURL: 'http://toutiao.itheima.net'
})
// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    Toast.loading({
      message: '加载中...', // 文本内容
      duration: 0 // 展示时长(ms)，值为 0 时，toast 不会消失
    })
    // // 从 vuex 中获取 token 的值
    const tokenStr = store.state.tokenInfo.token
    if (tokenStr) {
      // 只有 tokenStr 的值存在，才有必要挂载到请求头的 Authorization 属性中
      config.headers.Authorization = 'Bearer ' + tokenStr
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)
// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对正常响应数据做点什么
    Toast.clear()
    return response
  },
  function (error) {
    // console.log(error);
    // 对响应错误做点什么
    // 1.判断响应消息是否过期
    if (error.response && error.response.status === 401) {
      // console.log(error.response);
      // console.log(error.response.status);
      // 1.1删除vuex中的token和local storage中的token
      store.commit("cleanTokenInfo")
      // 强制跳转到登录页面
      router.push("/login?pre=" + router.currentRoute.fullPath)
      // console.log(router);
      // console.log(router.currentRoute.fullPath);
    }
    return Promise.reject(error)
  }
)

export default instance
